/*
[编程题]视野争夺(0.2)
time:20210319 15:01 PM
key:1.i从1开始，可以通过i-1%m来保证每m个一次变化。只通过0.3，因为是普通加法。
user：ldc
*/

#include <iostream>
#include<iomanip>  
#include <iterator>
#include<stack>
#include<algorithm>
#include<queue>
#include<vector>
#include<math.h>
using namespace std;
class Tree
{
public:
	int data;
	Tree* lchild;
	Tree* rchild;

	Tree()
	{
		data = -1;
		lchild = NULL;
		rchild = NULL;
	}
};
void change(int& a, int& b)
{
	int k;
	k = a;
	a = b;
	b = k;
}
void maopao(int* A, int n)
{
	for (int i = 0; i < n-1; i++)
	{
		if (A[i] > A[i + 1])
		{
			change(A[i], A[i + 1]);
		}
		
	}
}

int PartSort(int* A, int L, int R)
{
	//取本数组首个为比较值
	int key = A[L];
	int i = L + 1;
	int j = R;
	//用标杆数对这个数组划分
	while (i < j)
	{

		//从左往右的数应该比key小，指针在第一个不合理位置停下。
		while (key > A[i] && i < j)
		{
			i++;
		}
		//从右往左的数应该比key大，指针在第一个不合理位置停下。
		while (key < A[j] && j > i)
		{
			j--;
		}
		//这里实际是两种情况也可以写成一种
		if (i < j)
		{
			//极为关键的一步，因为有可能第二个和最后一个值相等，这样会进入无限循环。必须将i推进至不等的位置。
			while (A[i] == A[j] && i < j)
			{

				i++;
			}
			change(A[i], A[j]);
		}
	}
	//将key放到前面数组的最后一个，分的时候可以不考虑这个已排序的key了。
	change(A[L], A[i - 1]);
	return i - 1;
}
void QuitSort(int* A, int L, int R)
{
	if (L < R)
	{
		if (A[L] > A[R])//很重要这步
		{
			change(A[L], A[R]);
		}
		//point就是分里的key最后的下标
		int point = PartSort(A, L, R);
		//key不参与下一趟的治了，少考虑一个元素
		QuitSort(A, L, point - 1);
		QuitSort(A, point + 1, R);

	}

}
class Date
{
public:
	bool work;
	bool exe;
	Date()
	{
		work = 0;
		exe = 0;
	}
	Date(bool a,bool b)
	{
		work = a;
		exe = b;
	}
};
int jiaoji(bool* flag, int l, int r)//返回lr能对数组补齐多少个
{
	int count = 0;
	for (int i = l; i <= r; i++)
	{
		if (flag[i] == 0)
		{
			count++;
		}
	}
	return count;
}
//最终检查整条数组
bool check(bool*color,int length)
{
	
	for (int i = 0; i < length; i++)
	{
		
		if (color[i] == 0)
		{
			return 1;
		}
	}
	return 0;
}
void fanzhuan(bool& a)
{
	if (a)
	{
		a=0;
	}
	else
	{
		a=1;
	}
}
int main()
{

	int i, j, n, x, m;
	cin >> n;
	int* A = new int[n];
	bool flag = 0;
	long long re = 0;
	for (i = 0; i < n; i++)
	{
		cin >> A[i];
	}
	j = 0;
	QuitSort(A,0,n-1);
	for (i = n-1; i >=0; i--)
	{
		if (!(j % 1))
		{
			fanzhuan(flag);
		}
		if (flag)
		{
			re += A[i];
			//cout << A[i] <<" ";
		}
		else
		{
			re += (A[i] * (-1));
			//cout << A[i] << " ";
		}
		j++;
	}
	cout << re;

}
